home *** CD-ROM | disk | FTP | other *** search
- package org.apache.xalan.xpath;
-
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.Serializable;
- import java.util.Vector;
- import org.apache.xalan.xpath.xml.PrefixResolver;
- import org.apache.xalan.xpath.xml.ProblemListener;
- import org.apache.xalan.xpath.xml.ProblemListenerDefault;
- import org.apache.xalan.xpath.xml.QName;
- import org.apache.xalan.xpath.xml.XSLMessages;
- import org.w3c.dom.DocumentFragment;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
-
- public class XPath implements Serializable {
- static XBoolean m_true = new XBooleanStatic(true);
- static XBoolean m_false = new XBooleanStatic(false);
- String m_currentPattern;
- static final int MAXTOKENQUEUESIZE = 500;
- Object[] m_tokenQueue = new Object[500];
- int m_tokenQueueSize;
- int[] m_opMap;
- public static final int MAPINDEX_LENGTH = 1;
- static final boolean m_debug = false;
- private transient ProblemListener m_problemListener;
- static final boolean m_trace = false;
- public static final double MATCH_SCORE_NONE = Double.NEGATIVE_INFINITY;
- public static final double MATCH_SCORE_QNAME = (double)0.0F;
- public static final double MATCH_SCORE_NSWILD = (double)-0.25F;
- public static final double MATCH_SCORE_NODETEST = (double)-0.5F;
- public static final double MATCH_SCORE_OTHER = (double)0.5F;
- public static final int ENDOP = -1;
- public static final int EMPTY = -2;
- public static final int ELEMWILDCARD = -3;
- public static final int OP_XPATH = 1;
- public static final int OP_OR = 2;
- public static final int OP_AND = 3;
- public static final int OP_NOTEQUALS = 4;
- public static final int OP_EQUALS = 5;
- public static final int OP_LTE = 6;
- public static final int OP_LT = 7;
- public static final int OP_GTE = 8;
- public static final int OP_GT = 9;
- public static final int OP_PLUS = 10;
- public static final int OP_MINUS = 11;
- public static final int OP_MULT = 12;
- public static final int OP_DIV = 13;
- public static final int OP_MOD = 14;
- public static final int OP_QUO = 15;
- public static final int OP_NEG = 16;
- public static final int OP_STRING = 17;
- public static final int OP_BOOL = 18;
- public static final int OP_NUMBER = 19;
- public static final int OP_UNION = 20;
- public static final int OP_LITERAL = 21;
- public static final int OP_VARIABLE = 22;
- public static final int OP_GROUP = 23;
- public static final int OP_NUMBERLIT = 24;
- public static final int OP_ARGUMENT = 25;
- public static final int OP_EXTFUNCTION = 26;
- public static final int OP_FUNCTION = 27;
- public static final int OP_LOCATIONPATH = 28;
- public static final int LOCATIONPATHEX_MASK = 65535;
- public static final int LOCATIONPATHEX_ISSIMPLE = 65536;
- public static final int OP_LOCATIONPATH_EX = 65564;
- public static final int OP_PREDICATE = 29;
- public static final int OP_MATCHPATTERN = 30;
- public static final int OP_LOCATIONPATHPATTERN = 31;
- public static final int NODETYPE_COMMENT = 1030;
- public static final int NODETYPE_TEXT = 1031;
- public static final int NODETYPE_PI = 1032;
- public static final int NODETYPE_NODE = 1033;
- public static final int NODENAME = 34;
- public static final int NODETYPE_ROOT = 35;
- public static final int NODETYPE_ANYELEMENT = 36;
- public static final int FROM_ANCESTORS = 37;
- public static final int FROM_ANCESTORS_OR_SELF = 38;
- public static final int FROM_ATTRIBUTES = 39;
- public static final int FROM_CHILDREN = 40;
- public static final int FROM_DESCENDANTS = 41;
- public static final int FROM_DESCENDANTS_OR_SELF = 42;
- public static final int FROM_FOLLOWING = 43;
- public static final int FROM_FOLLOWING_SIBLINGS = 44;
- public static final int FROM_PARENT = 45;
- public static final int FROM_PRECEDING = 46;
- public static final int FROM_PRECEDING_SIBLINGS = 47;
- public static final int FROM_SELF = 48;
- public static final int FROM_NAMESPACE = 49;
- public static final int FROM_ROOT = 55;
- public static final int FUNC_CURRENT = 0;
- public static final int FUNC_LAST = 1;
- public static final int FUNC_POSITION = 2;
- public static final int FUNC_COUNT = 3;
- public static final int FUNC_ID = 4;
- public static final int FUNC_KEY = 5;
- public static final int FUNC_LOCAL_PART = 7;
- public static final int FUNC_NAMESPACE = 8;
- public static final int FUNC_QNAME = 9;
- public static final int FUNC_GENERATE_ID = 10;
- public static final int FUNC_NOT = 11;
- public static final int FUNC_TRUE = 12;
- public static final int FUNC_FALSE = 13;
- public static final int FUNC_BOOLEAN = 14;
- public static final int FUNC_NUMBER = 15;
- public static final int FUNC_FLOOR = 16;
- public static final int FUNC_CEILING = 17;
- public static final int FUNC_ROUND = 18;
- public static final int FUNC_SUM = 19;
- public static final int FUNC_STRING = 20;
- public static final int FUNC_STARTS_WITH = 21;
- public static final int FUNC_CONTAINS = 22;
- public static final int FUNC_SUBSTRING_BEFORE = 23;
- public static final int FUNC_SUBSTRING_AFTER = 24;
- public static final int FUNC_NORMALIZE_SPACE = 25;
- public static final int FUNC_TRANSLATE = 26;
- public static final int FUNC_CONCAT = 27;
- public static final int FUNC_SUBSTRING = 29;
- public static final int FUNC_STRING_LENGTH = 30;
- public static final int FUNC_SYSTEM_PROPERTY = 31;
- public static final int FUNC_LANG = 32;
- public static final int FUNC_EXT_FUNCTION_AVAILABLE = 33;
- public static final int FUNC_EXT_ELEM_AVAILABLE = 34;
- public static final int FUNC_DOCLOCATION = 35;
- public static final int FUNC_UNPARSED_ENTITY_URI = 36;
- private static final int NUM_BUILT_IN_FUNCS = 37;
- private static final int NUM_ALLOWABLE_ADDINS = 30;
- private static Function[] m_functions = new Function[67];
- private static int m_funcNextFreeIndex = 37;
- public static final int MATCH_ATTRIBUTE = 94;
- public static final int MATCH_ANY_ANCESTOR = 95;
- public static final int MATCH_IMMEDIATE_ANCESTOR = 96;
- public static final String PSEUDONAME_ANY = "*";
- public static final String PSEUDONAME_ROOT = "/";
- public static final String PSEUDONAME_TEXT = "#text";
- public static final String PSEUDONAME_COMMENT = "#comment";
- public static final String PSEUDONAME_PI = "#pi";
- public static final String PSEUDONAME_OTHER = "*";
- private static final int NEXT_FREE_ID = 99;
-
- public String getPatternString() {
- return this.m_currentPattern;
- }
-
- public Object[] getTokenQueue() {
- return this.m_tokenQueue;
- }
-
- public int getTokenQueueSize() {
- return this.m_tokenQueueSize;
- }
-
- public int[] getOpMap() {
- return this.m_opMap;
- }
-
- public XPath(ProblemListener var1) {
- this.m_problemListener = var1;
- }
-
- public XPath() {
- this.m_problemListener = new ProblemListenerDefault();
- }
-
- public void setProblemListener(ProblemListener var1) {
- this.m_problemListener = var1;
- }
-
- public ProblemListener getProblemListener() {
- return this.m_problemListener;
- }
-
- private XLocator createXLocatorHandler(XPathSupport var1) {
- return var1.createXLocatorHandler();
- }
-
- private void readObject(ObjectInputStream var1) throws IOException {
- try {
- var1.defaultReadObject();
- } catch (ClassNotFoundException var3) {
- throw new RuntimeException(XSLMessages.createXPATHMessage(68, new Object[]{((Throwable)var3).getMessage()}));
- }
- }
-
- public XObject execute(XPathSupport var1, Node var2, PrefixResolver var3) throws SAXException {
- return this.execute(var1, var2, var3, (NodeCallback)null, (Object)null, false);
- }
-
- public XObject execute(XPathSupport var1, Node var2, PrefixResolver var3, NodeCallback var4, Object var5, boolean var6) throws SAXException {
- PrefixResolver var7 = var1.getNamespaceContext();
- var1.setNamespaceContext(var3);
- var1.setCurrentNode(var2);
- Object var8 = null;
-
- try {
- if (var5 != null) {
- var1.pushXPathContext(this, var1, var2, var3);
- }
-
- var13 = this.execute(var1, var2, 0, var4, var5, var6);
- if (var5 != null) {
- var1.popXPathContext();
- }
- } finally {
- var1.setNamespaceContext(var7);
- var1.setCurrentNode((Node)null);
- }
-
- return var13;
- }
-
- public double getMatchScore(XPathSupport var1, Node var2) throws SAXException {
- double var3 = Double.NEGATIVE_INFINITY;
- int var5 = 0;
- if (this.m_opMap[var5] == 30) {
- var5 = getFirstChildPos(var5);
- XLocator var6 = var1.getXLocatorFromNode(var2);
- if (var6 == null) {
- var6 = var1.createXLocatorHandler();
- }
-
- while(this.m_opMap[var5] == 31) {
- int var7 = this.getNextOpPos(var5);
- var3 = var6.locationPathPattern(this, var1, var2, var5);
- if (var3 != Double.NEGATIVE_INFINITY) {
- break;
- }
-
- var5 = var7;
- }
- } else {
- this.error(var2, 22);
- }
-
- return var3;
- }
-
- int getCountOfContextNodeList(XPath var1, XPathSupport var2, Node var3) throws SAXException {
- if (var2.getThrowFoundIndex()) {
- throw new FoundIndex();
- } else {
- NodeList var4 = var2.getContextNodeList();
- if (var4 == null) {
- XObject var5 = var2.reExecuteXPathContext(var1, var2, var3);
- if (var5 == null || var5.getType() != 4) {
- if (var2.getContextNodePosition() > 0) {
- throw new FoundIndex();
- }
-
- return 0;
- }
-
- var4 = var5.nodeset();
- }
-
- return var4.getLength();
- }
- }
-
- int getPositionInContextNodeList(Node var1, XPathSupport var2) {
- if (var2.getThrowFoundIndex()) {
- throw new FoundIndex();
- } else {
- int var3 = var2.getContextNodePosition();
- if (var3 >= 0) {
- return var3;
- } else {
- var3 = -1;
- if (var2.getContextNodeList() != null) {
- int var4 = var2.getContextNodeList().getLength();
-
- for(int var5 = 0; var5 < var4; ++var5) {
- Node var6 = var2.getContextNodeList().item(var5);
- if (var6 != null && var6.equals(var1)) {
- var3 = var5 + 1;
- break;
- }
- }
- }
-
- return var3;
- }
- }
- }
-
- void shrink() {
- int[] var1 = this.m_opMap;
- int var2 = this.m_opMap[1];
- this.m_opMap = new int[var2 + 4];
-
- int var3;
- for(var3 = 0; var3 < var2; ++var3) {
- this.m_opMap[var3] = var1[var3];
- }
-
- this.m_opMap[var3] = 0;
- this.m_opMap[var3 + 1] = 0;
- this.m_opMap[var3 + 2] = 0;
- Object[] var4 = this.m_tokenQueue;
- var2 = this.m_tokenQueueSize;
- this.m_tokenQueue = new Object[var2 + 4];
-
- for(var3 = 0; var3 < var2; ++var3) {
- this.m_tokenQueue[var3] = var4[var3];
- }
-
- this.m_tokenQueue[var3] = null;
- this.m_tokenQueue[var3 + 1] = null;
- this.m_tokenQueue[var3 + 2] = null;
- }
-
- public void installFunction(String var1, int var2, Function var3) {
- m_functions[var2] = var3;
- }
-
- public static int installFunction(String var0, Function var1) {
- Object var3 = XPathProcessorImpl.m_functions.get(var0);
- int var2;
- if (var3 != null) {
- var2 = (Integer)var3;
- } else {
- var2 = m_funcNextFreeIndex++;
- XPathProcessorImpl.m_functions.put(var0, new Integer(var2));
- }
-
- m_functions[var2] = var1;
- return var2;
- }
-
- protected XObject xpath(XPathSupport var1, Node var2, int var3) throws SAXException {
- return this.execute(var1, var2, var3 + 2);
- }
-
- // $FF: renamed from: or (org.apache.xalan.xpath.XPathSupport, org.w3c.dom.Node, int) org.apache.xalan.xpath.XBoolean
- protected XBoolean method_0(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var6 = this.execute(var1, var2, var3);
- XBoolean var5;
- if (!var6.bool()) {
- XObject var7 = this.execute(var1, var2, var4);
- if (!var7.bool()) {
- var5 = new XBoolean(false);
- } else {
- var5 = new XBoolean(true);
- }
- } else {
- var5 = new XBoolean(true);
- }
-
- return var5;
- }
-
- protected XBoolean and(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- if (var5.bool()) {
- XObject var6 = this.execute(var1, var2, var4);
- return var6.bool() ? m_true : m_false;
- } else {
- return m_false;
- }
- }
-
- protected XBoolean notequals(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return var5.notEquals(var6) ? m_true : m_false;
- }
-
- protected XBoolean equals(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3, (NodeCallback)null, (Object)null, true);
- XObject var6 = this.execute(var1, var2, var4, (NodeCallback)null, (Object)null, true);
- return var5.equals(var6) ? m_true : m_false;
- }
-
- protected XBoolean lte(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return var5.lessThanOrEqual(var6) ? m_true : m_false;
- }
-
- // $FF: renamed from: lt (org.apache.xalan.xpath.XPathSupport, org.w3c.dom.Node, int) org.apache.xalan.xpath.XBoolean
- protected XBoolean method_1(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return var5.lessThan(var6) ? m_true : m_false;
- }
-
- protected XBoolean gte(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return var5.greaterThanOrEqual(var6) ? m_true : m_false;
- }
-
- // $FF: renamed from: gt (org.apache.xalan.xpath.XPathSupport, org.w3c.dom.Node, int) org.apache.xalan.xpath.XBoolean
- protected XBoolean method_2(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return var5.greaterThan(var6) ? m_true : m_false;
- }
-
- protected XNumber plus(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return new XNumber(var5.num() + var6.num());
- }
-
- protected XNumber minus(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return new XNumber(var5.num() - var6.num());
- }
-
- protected XNumber mult(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return new XNumber(var5.num() * var6.num());
- }
-
- protected XNumber div(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return new XNumber(var5.num() / var6.num());
- }
-
- protected XNumber mod(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return new XNumber(var5.num() % var6.num());
- }
-
- protected XNumber quo(XPathSupport var1, Node var2, int var3) throws SAXException {
- this.warn(5);
- var3 = getFirstChildPos(var3);
- int var4 = this.getNextOpPos(var3);
- XObject var5 = this.execute(var1, var2, var3);
- XObject var6 = this.execute(var1, var2, var4);
- return new XNumber((double)((int)(var5.num() / var6.num())));
- }
-
- protected XNumber neg(XPathSupport var1, Node var2, int var3) throws SAXException {
- XObject var4 = this.execute(var1, var2, var3 + 2);
- return new XNumber(-var4.num());
- }
-
- protected XString string(XPathSupport var1, Node var2, int var3) throws SAXException {
- XObject var4 = this.execute(var1, var2, var3 + 2);
- return new XString(var4.str());
- }
-
- protected XBoolean bool(XPathSupport var1, Node var2, int var3) throws SAXException {
- XObject var4 = this.execute(var1, var2, var3 + 2);
- return var4.bool() ? m_true : m_false;
- }
-
- protected XNumber number(XPathSupport var1, Node var2, int var3) throws SAXException {
- XObject var4 = this.execute(var1, var2, var3 + 2);
- return new XNumber(var4.num());
- }
-
- protected XNodeSet union(XPathSupport var1, Node var2, int var3, NodeCallback var4, Object var5) throws SAXException {
- XLocator var6 = var1.getXLocatorFromNode(var2);
- if (var6 == null) {
- var6 = var1.createXLocatorHandler();
- }
-
- XNodeSet var7 = var6.union(this, var1, var2, var3, var4, var5);
- return var7;
- }
-
- protected XString literal(XPathSupport var1, Node var2, int var3) {
- var3 = getFirstChildPos(var3);
- return (XString)this.m_tokenQueue[this.m_opMap[var3]];
- }
-
- protected XObject variable(XPathSupport var1, Node var2, int var3) throws SAXException {
- var3 = getFirstChildPos(var3);
- String var4 = (String)this.m_tokenQueue[this.m_opMap[var3]];
- QName var5 = new QName(var4, var1.getNamespaceContext());
-
- XObject var6;
- try {
- var6 = var1.getVariable(var5);
- } catch (Exception var7) {
- this.error(23, new Object[]{var4});
- var6 = null;
- }
-
- if (var6 == null) {
- this.error(var2, 43, new Object[]{var4});
- }
-
- return var6;
- }
-
- protected XObject group(XPathSupport var1, Node var2, int var3) throws SAXException {
- return this.execute(var1, var2, var3 + 2);
- }
-
- protected XNumber numberlit(XPathSupport var1, Node var2, int var3) {
- var3 = getFirstChildPos(var3);
- return (XNumber)this.m_tokenQueue[this.m_opMap[var3]];
- }
-
- protected XObject arg(XPathSupport var1, Node var2, int var3) throws SAXException {
- return this.execute(var1, var2, var3 + 2);
- }
-
- public XNodeSet locationPath(XPathSupport var1, Node var2, int var3, NodeCallback var4, Object var5, boolean var6) throws SAXException {
- XLocator var7 = var1.getXLocatorFromNode(var2);
- if (var7 == null) {
- var7 = var1.createXLocatorHandler();
- }
-
- XNodeSet var8 = var7.locationPath(this, var1, var2, var3, var4, var5, var6);
- return var8;
- }
-
- public XObject predicate(XPathSupport var1, Node var2, int var3) throws SAXException {
- Object var4 = this.execute(var1, var2, var3 + 2, (NodeCallback)null, (Object)null, true);
- int var5 = ((XObject)var4).getType();
- if (var5 != 2 && var5 != 1) {
- var4 = ((XObject)var4).bool() ? m_true : m_false;
- }
-
- return (XObject)var4;
- }
-
- protected MutableNodeList step(XPathSupport var1, Node var2, int var3) throws SAXException {
- this.warn(var2, 6);
- return null;
- }
-
- protected XObject extfunction(XPathSupport var1, Node var2, int var3, String var4, String var5, Vector var6, Object var7) throws SAXException {
- Object var9 = var1.extFunction(var4, var5, var6, var7);
- Object var8;
- if (var9 != null) {
- if (var9 instanceof XObject) {
- var8 = (XObject)var9;
- } else if (var9 instanceof XLocator) {
- XLocator var10 = (XLocator)var9;
- var3 = this.getNextOpPos(var3 + 1);
- var8 = var10.connectToNodes(this, var1, var2, var3, var6);
- } else if (var9 instanceof String) {
- var8 = new XString((String)var9);
- } else if (var9 instanceof Boolean) {
- var8 = (Boolean)var9 ? m_true : m_false;
- } else if (var9 instanceof Double) {
- var8 = new XNumber((Double)var9);
- } else if (var9 instanceof DocumentFragment) {
- var8 = new XRTreeFrag((DocumentFragment)var9);
- } else if (var9 instanceof Node) {
- var3 = this.getNextOpPos(var3);
- XNodeSet var18 = null;
- if (var3 < this.m_opMap[1] && (this.m_opMap[var3] & '\uffff') == 28) {
- var18 = this.locationPath(var1, (Node)var9, var3, (NodeCallback)null, (Object)null, false);
- }
-
- var8 = var18 == null ? new XNodeSet((Node)var9) : var18;
- } else if (var9 instanceof NodeList) {
- var3 = this.getNextOpPos(var3);
- XNodeSet var19 = null;
- if (var3 < this.m_opMap[1] && (this.m_opMap[var3] & '\uffff') == 28) {
- NodeList var11 = (NodeList)var9;
- int var12 = var11.getLength();
-
- for(int var13 = 0; var13 < var12; ++var13) {
- XNodeSet var14 = this.locationPath(var1, var11.item(var13), var3, (NodeCallback)null, (Object)null, false);
- if (var14 == null) {
- var19 = var14;
- } else {
- var19.mutableNodeset().addNodes(var14.nodeset());
- }
- }
- }
-
- var8 = var19 == null ? new XNodeSet((NodeList)var9) : var19;
- } else {
- var8 = new XObject(var9);
- }
- } else {
- var8 = new XNull();
- }
-
- return (XObject)var8;
- }
-
- protected XObject matchPattern(XPathSupport var1, Node var2, int var3) throws SAXException {
- Object var4;
- int var5;
- for(var4 = null; this.m_opMap[var3] == 31; var3 = var5) {
- var5 = this.getNextOpPos(var3);
- var4 = this.execute(var1, var2, var3);
- if (((XObject)var4).num() != Double.NEGATIVE_INFINITY) {
- break;
- }
- }
-
- if (var4 == null) {
- var4 = new XNumber(Double.NEGATIVE_INFINITY);
- }
-
- return (XObject)var4;
- }
-
- protected XNumber locationPathPattern(XPathSupport var1, Node var2, int var3) throws SAXException {
- XLocator var4 = var1.getXLocatorFromNode(var2);
- if (var4 == null) {
- var4 = var1.createXLocatorHandler();
- }
-
- double var5 = var4.locationPathPattern(this, var1, var2, var3);
- return new XNumber(var5);
- }
-
- public Vector getTargetElementStrings() {
- Vector var1 = new Vector();
-
- int var3;
- for(int var2 = 2; this.m_opMap[var2] == 31; var2 = var3) {
- var3 = this.getNextOpPos(var2);
-
- int var4;
- for(var2 = getFirstChildPos(var2); this.m_opMap[var2] != -1; var2 = var4) {
- var4 = this.getNextOpPos(var2);
- int var5 = this.m_opMap[var4];
- if (var5 == 29 || var5 == -1) {
- int var6 = this.m_opMap[var2];
- var2 += 3;
- switch (var6) {
- case 27:
- var1.addElement("*");
- break;
- case 55:
- var1.addElement("/");
- break;
- case 94:
- case 95:
- case 96:
- int var7 = this.m_opMap[var2];
- ++var2;
- switch (var7) {
- case 34:
- int var8 = this.m_opMap[var2 + 1];
- if (var8 >= 0) {
- String var9 = (String)this.m_tokenQueue[var8];
- if (var9.equals("*")) {
- var1.addElement("*");
- } else {
- var1.addElement(var9);
- }
- } else {
- var1.addElement("*");
- }
- break;
- case 35:
- var1.addElement("/");
- break;
- case 36:
- var1.addElement("*");
- break;
- case 1030:
- var1.addElement("#comment");
- break;
- case 1031:
- var1.addElement("#text");
- break;
- case 1032:
- var1.addElement("*");
- break;
- case 1033:
- var1.addElement("*");
- break;
- default:
- var1.addElement("*");
- }
- }
- }
- }
- }
-
- return var1;
- }
-
- private XObject executeExtension(XPathSupport var1, Node var2, int var3) throws SAXException {
- int var4 = var3 + this.m_opMap[var3 + 1] - 1;
- var3 = getFirstChildPos(var3);
- String var5 = (String)this.m_tokenQueue[this.m_opMap[var3]];
- ++var3;
- String var6 = (String)this.m_tokenQueue[this.m_opMap[var3]];
- ++var3;
-
- Vector var7;
- int var8;
- for(var7 = new Vector(); var3 < var4; var3 = var8) {
- var8 = this.getNextOpPos(var3);
- var7.addElement(this.execute(var1, var2, var3));
- }
-
- return this.extfunction(var1, var2, var3, var5, var6, var7, String.valueOf(this.m_opMap[var3]) + String.valueOf(this.hashCode()));
- }
-
- XObject executeFunction(XPathSupport var1, Node var2, int var3) throws SAXException {
- int var4 = var3 + this.m_opMap[var3 + 1] - 1;
- var3 = getFirstChildPos(var3);
- int var5 = this.m_opMap[var3];
- ++var3;
- if (var5 != -1) {
- return m_functions[var5].execute(this, var1, var2, var3, var5, var4);
- } else {
- this.warn(7);
- return null;
- }
- }
-
- public XObject execute(XPathSupport var1, Node var2, int var3) throws SAXException {
- int var4 = this.m_opMap[var3];
- switch (var4) {
- case 1:
- return this.execute(var1, var2, var3 + 2);
- case 2:
- return this.method_0(var1, var2, var3);
- case 3:
- return this.and(var1, var2, var3);
- case 4:
- return this.notequals(var1, var2, var3);
- case 5:
- return this.equals(var1, var2, var3);
- case 6:
- return this.lte(var1, var2, var3);
- case 7:
- return this.method_1(var1, var2, var3);
- case 8:
- return this.gte(var1, var2, var3);
- case 9:
- return this.method_2(var1, var2, var3);
- case 10:
- return this.plus(var1, var2, var3);
- case 11:
- return this.minus(var1, var2, var3);
- case 12:
- return this.mult(var1, var2, var3);
- case 13:
- return this.div(var1, var2, var3);
- case 14:
- return this.mod(var1, var2, var3);
- case 15:
- return this.quo(var1, var2, var3);
- case 16:
- return this.neg(var1, var2, var3);
- case 17:
- return this.string(var1, var2, var3);
- case 18:
- return this.bool(var1, var2, var3);
- case 19:
- return this.number(var1, var2, var3);
- case 20:
- return this.union(var1, var2, var3, (NodeCallback)null, (Object)null);
- case 21:
- return this.literal(var1, var2, var3);
- case 22:
- return this.variable(var1, var2, var3);
- case 23:
- return this.group(var1, var2, var3);
- case 24:
- return this.numberlit(var1, var2, var3);
- case 25:
- return this.arg(var1, var2, var3);
- case 26:
- return this.executeExtension(var1, var2, var3);
- case 27:
- return this.executeFunction(var1, var2, var3);
- case 28:
- return this.locationPath(var1, var2, var3, (NodeCallback)null, (Object)null, false);
- case 29:
- return null;
- case 30:
- return this.matchPattern(var1, var2, var3 + 2);
- case 31:
- return this.locationPathPattern(var1, var2, var3);
- default:
- if (var4 == 65564) {
- return this.locationPath(var1, var2, var3, (NodeCallback)null, (Object)null, false);
- } else {
- this.error(var2, 24, new Object[]{Integer.toString(this.m_opMap[var3])});
- return null;
- }
- }
- }
-
- public XObject execute(XPathSupport var1, Node var2, int var3, NodeCallback var4, Object var5, boolean var6) throws SAXException {
- int var7 = this.m_opMap[var3];
- switch (var7) {
- case 1:
- return this.execute(var1, var2, var3 + 2, var4, var5, var6);
- case 2:
- return this.method_0(var1, var2, var3);
- case 3:
- return this.and(var1, var2, var3);
- case 4:
- return this.notequals(var1, var2, var3);
- case 5:
- return this.equals(var1, var2, var3);
- case 6:
- return this.lte(var1, var2, var3);
- case 7:
- return this.method_1(var1, var2, var3);
- case 8:
- return this.gte(var1, var2, var3);
- case 9:
- return this.method_2(var1, var2, var3);
- case 10:
- return this.plus(var1, var2, var3);
- case 11:
- return this.minus(var1, var2, var3);
- case 12:
- return this.mult(var1, var2, var3);
- case 13:
- return this.div(var1, var2, var3);
- case 14:
- return this.mod(var1, var2, var3);
- case 15:
- return this.quo(var1, var2, var3);
- case 16:
- return this.neg(var1, var2, var3);
- case 17:
- return this.string(var1, var2, var3);
- case 18:
- return this.bool(var1, var2, var3);
- case 19:
- return this.number(var1, var2, var3);
- case 20:
- return this.union(var1, var2, var3, var4, var5);
- case 21:
- return this.literal(var1, var2, var3);
- case 22:
- return this.variable(var1, var2, var3);
- case 23:
- return this.group(var1, var2, var3);
- case 24:
- return this.numberlit(var1, var2, var3);
- case 25:
- return this.arg(var1, var2, var3);
- case 26:
- return this.executeExtension(var1, var2, var3);
- case 27:
- return this.executeFunction(var1, var2, var3);
- case 28:
- return this.locationPath(var1, var2, var3, var4, var5, var6);
- case 29:
- return null;
- case 30:
- return this.matchPattern(var1, var2, var3 + 2);
- case 31:
- return this.locationPathPattern(var1, var2, var3);
- default:
- if (var7 == 65564) {
- return this.locationPath(var1, var2, var3, var4, var5, var6);
- } else {
- this.error(var2, 24, new Object[]{Integer.toString(this.m_opMap[var3])});
- return null;
- }
- }
- }
-
- public int getOp(int var1) {
- return this.m_opMap[var1];
- }
-
- public int getNextOpPos(int var1) {
- return var1 + this.m_opMap[var1 + 1];
- }
-
- public static int getNextOpPos(int[] var0, int var1) {
- return var1 + var0[var1 + 1];
- }
-
- public static int getFirstChildPos(int var0) {
- return var0 + 2;
- }
-
- public int getArgLengthOfStep(int var1) {
- return this.m_opMap[var1 + 1 + 1] - 3;
- }
-
- public static int getFirstChildPosOfStep(int var0) {
- return var0 + 3;
- }
-
- private final void trace(String var1) {
- System.out.println(var1);
- }
-
- void warn(int var1) throws SAXException {
- this.warn((Node)null, var1, (Object[])null);
- }
-
- void warn(int var1, Object[] var2) throws SAXException {
- this.warn((Node)null, var1, var2);
- }
-
- void warn(Node var1, int var2) throws SAXException {
- this.warn(var1, var2, (Object[])null);
- }
-
- void warn(Node var1, int var2, Object[] var3) throws SAXException {
- String var4 = XSLMessages.createXPATHWarning(var2, var3);
- boolean var5 = this.m_problemListener.problem((short)4, (short)1, (Object)null, var1, var4, (String)null, 0, 0);
- if (var5) {
- throw new XPathException(var4);
- }
- }
-
- // $FF: renamed from: assert (boolean, java.lang.String) void
- private void method_3(boolean var1, String var2) throws SAXException {
- if (!var1) {
- this.error((Node)null, 30, new Object[]{var2});
- }
-
- }
-
- void error(int var1) throws SAXException {
- this.error((Node)null, var1, (Object[])null);
- }
-
- void error(int var1, Object[] var2) throws SAXException {
- this.error((Node)null, var1, var2);
- }
-
- void error(Node var1, int var2) throws SAXException {
- this.error(var1, var2, (Object[])null);
- }
-
- void error(Node var1, int var2, Object[] var3) throws SAXException {
- String var4 = XSLMessages.createXPATHMessage(var2, var3);
- String var5 = (this.m_currentPattern != null ? "pattern = '" + this.m_currentPattern + "'\n" : "") + var4;
- boolean var6 = this.m_problemListener.problem((short)4, (short)2, (Object)null, var1, var5, (String)null, 0, 0);
- if (var6) {
- throw new XPathException(var5);
- }
- }
-
- static {
- m_functions[0] = new FuncLoader("FuncCurrent", 0);
- m_functions[1] = new FuncLoader("FuncLast", 1);
- m_functions[2] = new FuncLoader("FuncPosition", 2);
- m_functions[3] = new FuncLoader("FuncCount", 3);
- m_functions[4] = new FuncLoader("FuncId", 4);
- m_functions[5] = new FuncLoader("FuncKey", 5);
- m_functions[7] = new FuncLoader("FuncLocalPart", 7);
- m_functions[8] = new FuncLoader("FuncNamespace", 8);
- m_functions[9] = new FuncLoader("FuncQname", 9);
- m_functions[10] = new FuncLoader("FuncGenerateId", 10);
- m_functions[11] = new FuncLoader("FuncNot", 11);
- m_functions[12] = new FuncLoader("FuncTrue", 12);
- m_functions[13] = new FuncLoader("FuncFalse", 13);
- m_functions[14] = new FuncLoader("FuncBoolean", 14);
- m_functions[32] = new FuncLoader("FuncLang", 32);
- m_functions[15] = new FuncLoader("FuncNumber", 15);
- m_functions[16] = new FuncLoader("FuncFloor", 16);
- m_functions[17] = new FuncLoader("FuncCeiling", 17);
- m_functions[18] = new FuncLoader("FuncRound", 18);
- m_functions[19] = new FuncLoader("FuncSum", 19);
- m_functions[20] = new FuncLoader("FuncString", 20);
- m_functions[21] = new FuncLoader("FuncStartsWith", 21);
- m_functions[22] = new FuncLoader("FuncContains", 22);
- m_functions[23] = new FuncLoader("FuncSubstringBefore", 23);
- m_functions[24] = new FuncLoader("FuncSubstringAfter", 24);
- m_functions[25] = new FuncLoader("FuncNormalizeSpace", 25);
- m_functions[26] = new FuncLoader("FuncTranslate", 26);
- m_functions[27] = new FuncLoader("FuncConcat", 27);
- m_functions[31] = new FuncLoader("FuncSystemProperty", 31);
- m_functions[33] = new FuncLoader("FuncExtFunctionAvailable", 33);
- m_functions[34] = new FuncLoader("FuncExtElementAvailable", 34);
- m_functions[29] = new FuncLoader("FuncSubstring", 29);
- m_functions[30] = new FuncLoader("FuncStringLength", 30);
- m_functions[35] = new FuncLoader("FuncDoclocation", 35);
- m_functions[36] = new FuncLoader("FuncUnparsedEntityURI", 36);
- }
- }
-